/*----------------------------------------------------------------------------------------- * Project Name : Array Struct * Programmed by : Kim Young Jae * Student Number : 2009063003 * (c) Copyright by Department of Computer Education at Chungbuk * National University, Chungbuk, Republic of Korea ------------------------------------------------------------------------------------------*/ #include #include #include #define MAX 100 typedef struct{ float coef; int expon; }poly; float cal(poly *poly, int count, float xval){ float result = 0; for (int i = 0; i < count; i++){ result += poly[i].coef * pow(xval, poly[i].expon); } return result; } float add(poly *poly1, poly *poly2, int count1, int count2, float xval){ int i = 0, j = 0, count = 0; float result = 0; poly poly3[MAX] = { NULL }; while (i < count1 && j < count2){ if (poly1[i].expon == poly2[j].expon){ poly3[count].expon = poly1[i].expon || poly2[j].expon; poly3[count].coef = poly1[i].coef + poly2[j].coef; count++, i++, j++; } else if (poly1[i].expon < poly2[j].expon){ poly3[count].expon = poly1[i].expon; poly3[count].coef = poly1[i].coef; count++, i++; } else{ poly3[count].expon = poly2[j].expon; poly3[count].coef = poly2[j].coef; count++, j++; } } for (; i < count1; i++){ poly3[count].expon = poly1[i].expon; poly3[count].coef = poly1[i].coef; } for (; j < count2; j++){ poly3[count].expon = poly2[j].expon; poly3[count].coef = poly2[j].coef; count++; } result = cal(poly3, count, xval); return result; } /* float multi(poly *poly1, poly *poly2, int count1, int count2, float xval){ poly poly3[MAX] = { NULL }; float result = 0; float count = 0; for (int i = 0; i < count1; i++){ for (int j = 0; j < count2; j++){ poly3[i + j].coef += poly1[i].coef * poly2[j].coef; poly3[i + j].expon = poly1[i].expon + poly2[j].expon; if ((i == count1) && (j == count2)){ break; } } } result = cal(poly3, count, xval); return result; } */ void main(){ poly poly1[MAX] = { NULL }; poly poly2[MAX] = { NULL }; int menu; int count1, count2, count; float result, xval; printf("ù¹ø° ´ÙÇ×½ÄÀÇ Ç×ÀÇ °³¼ö : "); scanf("%d", &count1); printf("\n * ¿À¸§Â÷¼øÀ¸·Î ÀÔ·ÂÇϽÿÀ *\n"); for (int i = 0; i < count1; i++){ printf("%d¹ø° Ç×ÀÇ Áö¼ö :", i + 1); scanf("%d", &poly1[i].expon); printf("%d¹ø° Ç×ÀÇ °è¼ö :", i + 1); scanf("%f", &poly1[i].coef); printf("\n"); } printf("µÎ¹ø° ´ÙÇ×½ÄÀÇ Ç×ÀÇ °³¼ö : "); scanf("%d", &count2); printf("\n * ¿À¸§Â÷¼øÀ¸·Î ÀÔ·ÂÇϽÿÀ *\n"); for (int i = 0; i < count2; i++){ printf("%d¹ø° Ç×ÀÇ Áö¼ö :", i + 1); scanf("%d", &poly2[i].expon); printf("%d¹ø° Ç×ÀÇ °è¼ö :", i + 1); scanf("%f", &poly2[i].coef); printf("\n"); } while (true){ printf("********Poly*******\n"); printf("1.poly1\n"); printf("2.poly2\n"); printf("3.poly1 + poly2\n"); printf("4.poly1 * poly2\n"); printf("5.EXIT\n"); printf("********Poly*******\n"); printf("\n"); printf("¿øÇÏ´Â ¸Þ´º¸¦ ¼±ÅÃÇϼ¼¿ä : "); scanf("%d", &menu); switch (menu){ case 1: printf("x°ªÀ» ÀÔ·ÂÇϼ¼¿ä : "); scanf("%f", &xval); result = cal(poly1, count1, xval); printf(" °á°ú°ªÀº %fÀÔ´Ï´Ù\n\n", result); break; case 2: printf("x°ªÀ» ÀÔ·ÂÇϼ¼¿ä : "); scanf("%f", &xval); result = cal(poly2, count2, xval); printf(" °á°ú°ªÀº %fÀÔ´Ï´Ù\n\n", result); break; case 3: printf("x°ªÀ» ÀÔ·ÂÇϼ¼¿ä : "); scanf("%f", &xval); result = add(poly1, poly2, count1, count2, xval); printf(" °á°ú°ªÀº %fÀÔ´Ï´Ù\n\n", result); break; /*case 4: printf("x°ªÀ» ÀÔ·ÂÇϼ¼¿ä : \n"); scanf("%f", &xval); result = multi(poly1, poly2, count1, count2, xval); printf(" °á°ú°ªÀº %fÀÔ´Ï´Ù\n", result);*/ case 5: exit(0); } } }